'''RDD数据计算_map
PySpark的数据计算，都是基于RDD对象进行的，那是如何进行的？
RDD对象内置丰富的成员方法(算子)
本案例讲 map算子

map算子，是将RDD的数据一条条处理，（T） -> U : 入参T  返回参U;
'''

from pyspark import SparkConf, SparkContext
# 使用os 配置python安装位置， 帮助spark找到python;
import os
os.environ['PYSPARK_PYTHON'] = 'D:\\yfxdeve\\python\Python39\\python.exe'

conf = SparkConf().setMaster("local[*]").setAppName("test_park")
sc = SparkContext(conf=conf)

# 准备一个RDD
rdd1 = sc.parallelize([1,2,3,4,5])

# 需求：将rdd1对象中的每个元素都 * 10
# 使用rdd.map() 需要自定义一个方法， 方法内实现业务逻辑；
# def func(data):
#     return data * 10
# rdd2 = rdd1.map(func)

# map链式调用
rdd2 = rdd1.map(lambda x:x * 10).map(lambda x:x + 5)
print(rdd2.collect())

sc.stop()

'''出现错误： Python worker failed to connect back.
    解释：使用Spark 需要指定python的位置'''